/********************************************************************************
 * Copyright (c)2016-2020, ShenZhen WanJiaAn Technology CO.,LTD.
 * All Rights Reserved.
 *
 * File Name     : System.h
 * Author        : joki.zhu
 * Date          : 2019-10-18
 *
 * Record        :
 * 1.Date        : 2019-10-18
 *   Author      : joki.zhu
 *   Modification: Created file
 ********************************************************************************/

#ifndef __SYSTEM_H__
#define __SYSTEM_H__

#include "app_common.h"

#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */

typedef struct {
    unsigned int startTime;
    unsigned int endTime;
    int bEnable;
}SYS_DAYLIGHT_TIME_S;

typedef struct {
    int zoneSec; //偏移时区对应的秒数
    SYS_DAYLIGHT_TIME_S stDayLightTime; //夏令时相关信息
    char reserved[128]; //时区额外预留信息
}SYS_TIMEZONE_INFO_S;

/// 系统时间结构
typedef struct SYSTEM_TIME{
    int  year;///< 年。   
	int  month;///< 月，January = 1, February = 2, and so on.   
	int  day;///< 日。   
	int  wday;///< 星期，Sunday = 0, Monday = 1, and so on   
	int  hour;///< 时。   
	int  minute;///< 分。   
	int  second;///< 秒。   
	int  isdst;///< 夏令时标识。   
}SYSTEM_TIME;

typedef struct {
	unsigned long totalMemSize;
	unsigned long freeMemSize;
	unsigned long runTime;
}SYSTEM_INFO_S;

void SystemTelnetOn(void);
void SystemTelnetOff(void);
AV_VOID SystemReboot(char *reason);
AV_VOID SystemReset(void);
void SystemSetUpdateFlag(void);
int SystemSetTimeZone(SYS_TIMEZONE_INFO_S stTimeZoneInfo);
int SystemPrintBootTime(char *keyword);
int SystemGetCurrentTime(SYSTEM_TIME *pTime);
int SystemSetCurrentTime(SYSTEM_TIME *pTime);

// 零时区
int SystemGetCurrentTimeUtc(SYSTEM_TIME *pTime);

int SystemSetTimeNtp(int serverNum, char **serverAddr);

int SystemGetSysInfo(SYSTEM_INFO_S *pstSysInfo);

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */


#endif /* __SYSTEM_H__ */


